let wx = require('weixin-js-sdk');

/**
 * 微信JSSDK的二次封装
 */
class Wx {

    static isIosWx(){
        return window.__wxjs_is_wkwebview
    }

    //IOS只要记录首次地址
    //安卓记住每次打开的地址
    static setPath(path) {
        if (!this.iosPath) {
            this.iosPath = path
        } else {
            this.path = path
        }
    }

    static getPath() {
        if (this.isIosWx()) {//ios
            return this.iosPath
        } else {
            return this.path
        }
    }

    static config(config, debug) {
        wx.config({
            debug: debug ? debug : false,
            ...config,
            jsApiList: ['scanQRCode','chooseWXPay',"updateAppMessageShareData","updateTimelineShareData","getLocation","openLocation"] // 必填，需要使用的JS接口列表
        });

        return new Promise(resolve => {
            wx.ready(function () {
                resolve()
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
            });
        })
    }

    static ready() {
        return new Promise(resolve => {
            wx.ready(function () {
                resolve()
                // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
            });
        })
    }

    static scan() {

        return new Promise(resolve => {
            wx.scanQRCode({
                needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
                scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
                success: function (res) {
                    // var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
                    resolve(res.resultStr)
                },
                cancel: function () {
                    resolve("cancel")
                }
            });
        })
    }

    static getPlace(){
        return new Promise(resolve => {
            wx.getLocation({
                type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                success: function (res) {
                    resolve({la:res.latitude,lg:res.longitude})
                },
                cancel: function () {
                    resolve("cancel")
                }
            });
        })
    }

    static pay(payConfig) {
        return new Promise(resolve => {

            payConfig = JSON.parse(payConfig)
            // console.log(payConfig.package)
            wx.chooseWXPay({
                ...payConfig,
                // timestamp: config.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                // nonceStr: config.nonceStr, // 支付签名随机串，不长于 32 位
                // package: config.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
                // signType: config.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
                // paySign: config.paySign, // 支付签名
                success: function (res) {
                    resolve("ok")
                    // 支付成功后的回调函数
                },
                cancel:function (res) {
                    //取消
                    resolve("cancel")
                }
            });
        })
    }

    //分享
    static share(title,link,imgUrl,desc){
        return new Promise(resolve => {
            wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
                //分享给朋友
                wx.updateAppMessageShareData({
                    title: title, // 分享标题
                    desc: desc, // 分享描述
                    link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: imgUrl, // 分享图标
                    success: function () {
                        // 设置成功
                        resolve()
                    }
                })
                //分享朋友圈
                wx.updateTimelineShareData({
                    title: title, // 分享标题
                    link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: imgUrl, // 分享图标
                    success: function () {
                        // 设置成功
                        resolve()
                    }
                })

            });

        })
    }

}

export default Wx